package com.example.everying.utils;

import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONException;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Slf4j
@Data
@Component
public class SmsTXUtil {
    // 短信应用 SDK AppID
    int appid = 1401010701; // SDK AppID 以1400开头
    // 短信应用 SDK AppKey
    String appkey = "30c4c71d6327bf7bc82de61edcd8b9c8";
    // 短信模板 ID，需要在短信应用中申请
    int templateId = 2474960; // 忘记密码的模板ID 您的动态验证码为：{1}，您正在进行密码重置操作，如非本人操作，请忽略本短信！
    int templateId2 = 2474959;   // 用户注册的模板id 验证码为：{1}，{2}分钟内有效！

    // 签名
    String smsSign = "河北雄安拓扬科技"; // NOTE: 签名参数使用的是`签名内容`，而不是`签名ID`。这里的签名"腾讯云"只是示例，真实的签名需要在短信控制台申请


    // 发送短信(忘记密码)
    public void sendForgetMsg(String phone, String code) {
        try {
            String[] params = {code}; // 是短信模板中的动态参数
            SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
            SmsSingleSenderResult result = ssender.sendWithParam("86", phone,
                    templateId, params, smsSign, "", "");
            System.out.println(result);
        } catch (HTTPException e) {
            // HTTP 响应码错误
            log.error("HTTP 响应码错误: {}", e.getStatusCode());
        } catch (JSONException e) {
            // JSON 解析错误
            log.error("JSON 解析错误: {}", e.getMessage());
        } catch (IOException e) {
            log.error("网络 IO 错误: {}", e.getMessage());
            // 网络 IO 错误
        }
    }

    // 发送短信(用户注册)
    public void sendRegisterMsg(String phone, String code, String time) {
        try {
            String[] params = {code, time}; // 是短信模板中的动态参数
            SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
            SmsSingleSenderResult result = ssender.sendWithParam("86", phone,
                    templateId2, params, smsSign, "", "");
            System.out.println(result);
        } catch (HTTPException e) {
            // HTTP 响应码错误
            log.error("HTTP 响应码错误: {}", e.getStatusCode());
        }
        catch (JSONException e) {
            // JSON 解析错误
            log.error("JSON 解析错误: {}", e.getMessage());
        }
        catch (IOException e) {
            log.error("网络 IO 错误: {}", e.getMessage());
            // 网络 IO 错误
        }

    }
}
